/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.univali.sindico.mb;

import br.univali.sindico.dao.ApartamentoDAO;
import br.univali.sindico.dao.BlocoDAO;
import br.univali.sindico.dao.VisitanteDAO;
import br.univali.sindico.entity.Apartamento;
import br.univali.sindico.entity.Bloco;
import br.univali.sindico.entity.Visitante;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.context.RequestContext;

/**
 *
 * @author Fernando
 */

@ManagedBean
@SessionScoped
public class VisitanteMB {
    private BlocoDAO blocoDAO = new BlocoDAO();
    private ApartamentoDAO apDAO = new ApartamentoDAO();
    private Bloco bloco = new Bloco();
    private Apartamento ap = new Apartamento();
    private VisitanteDAO visitanteDAO = new VisitanteDAO();
    private Visitante visitante = new Visitante();
    private Integer idBloco = 0;
    private Integer idAp =  0;
    private Visitante visitanteSelecionado = new Visitante();

    public Visitante getVisitanteSelecionado() {
        return visitanteSelecionado;
    }

    public void setVisitanteSelecionado(Visitante visitanteSelecionado) {
        this.visitanteSelecionado = visitanteSelecionado;
    }

    public Integer getIdBloco() {
        return idBloco;
    }

    public void setIdBloco(Integer idBloco) {
        this.idBloco = idBloco;
    }

    public Integer getIdAp() {
        return idAp;
    }

    public void setIdAp(Integer idAp) {
        this.idAp = idAp;
    }

    public BlocoDAO getBlocoDAO() {
        return blocoDAO;
    }

    public VisitanteDAO getVisitanteDAO() {
        return visitanteDAO;
    }

    public void setVisitanteDAO(VisitanteDAO visitanteDAO) {
        this.visitanteDAO = visitanteDAO;
    }

    public Visitante getVisitante() {
        return visitante;
    }

    public void setVisitante(Visitante visitante) {
        this.visitante = visitante;
    }

    public void setBlocoDAO(BlocoDAO blocoDAO) {
        this.blocoDAO = blocoDAO;
    }

    public ApartamentoDAO getApDAO() {
        return apDAO;
    }

    public void setApDAO(ApartamentoDAO apDAO) {
        this.apDAO = apDAO;
    }

    public Bloco getBloco() {
        return bloco;
    }

    public void setBloco(Bloco bloco) {
        this.bloco = bloco;
    }

    public Apartamento getAp() {
        return ap;
    }

    public void setAp(Apartamento ap) {
        this.ap = ap;
    }
    
    public List<SelectItem> getListAp(){
        List<SelectItem> list = new ArrayList<SelectItem>();
        if(idBloco != 0){
            for(Apartamento app : apDAO.getAllbyBloco(idBloco)){
                list.add(new SelectItem(app.getCodigo(), app.getApartamento()));
            }
        }
        return list;
    }
    
    public List<SelectItem> getListBloco(){
        List<SelectItem> list = new ArrayList<SelectItem>();
        for(Bloco b : blocoDAO.getAll()){
            list.add(new SelectItem(b.getCodigo(), b.getBloco()));
        }
        return list;
    }
    
    public List<Visitante> getAll(){
        return visitanteDAO.getAll();
    }
    
    public void clean(){
        bloco = new Bloco();
        ap = new Apartamento();
        visitante = new Visitante();
        idAp = 0;
        idBloco = 0;
    }
    
    public void delete(){
        if(visitanteSelecionado != null){
            visitanteDAO.delete(visitanteSelecionado);
            FacesContext.getCurrentInstance().addMessage("tabView:formVisitante:messageVisitante", new FacesMessage(FacesMessage.SEVERITY_INFO, null, "Visitante Deletado Com Sucesso!"));
        }
        clean();
    }
        
    public void salvar(){
        bloco = blocoDAO.getById(idBloco);
        ap = apDAO.getById(idAp);
        ap.setBlocoCodigo(bloco);
        visitante.setApartamentoCodigo(ap);
        visitanteDAO.save(visitante);
        RequestContext.getCurrentInstance().execute("modalVisitante.hide()");
        FacesContext.getCurrentInstance().addMessage("tabView:formVisitante:messageVisitante", new FacesMessage(FacesMessage.SEVERITY_INFO, null, "Visitante Cadastrado Com Sucesso!"));
        clean();
    }
    
    public void abrirEditar(){
        idBloco = visitanteSelecionado.getApartamentoCodigo().getBlocoCodigo().getCodigo().intValue();        
        idAp = visitanteSelecionado.getApartamentoCodigo().getCodigo().intValue();
        bloco = blocoDAO.getById(idBloco);
        ap = apDAO.getById(idAp);
        ap.setBlocoCodigo(bloco);
        visitanteSelecionado.setApartamentoCodigo(ap);
        visitante = visitanteSelecionado;
    }
}
